<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>

        
      function mergeSort(arr) {
        debugger
        if (arr.length <= 1) {
          return arr; // 如果数组长度为0或1，直接返回
        }
        const mid = Math.floor(arr.length / 2); // 找到数组的中间索引
        const left = mergeSort(arr.slice(0, mid)); //递归排序左半部分
        const right = mergeSort(arr.slice(mid)); //递归排序右半部分
        return merge(left, right); // 合并排序后的左右部分
      }
      // 辅助函数：合并两个已排序的数组
      function merge(left, right) {
        const result = [];
        let leftIndex = 0;
        let rightIndex = 0;
        // 合并左右两个数组
        while (leftIndex < left.length && rightIndex < right.length) {
          if (left[leftIndex] < right[rightIndex]) {
            result.push(left[leftIndex]); // 如果左边的元素小于右边的元素，加入结果数组 leftIndex++; // 移动左边索引
          } else {
            result.push(right[rightIndex]); // 如果右边的元素小于等于左边的元素，加入结果数组 rightIndex++; // 移动右边索引
          }
        }
        // 将剩余元素添加到结果数组
        return result
          .concat(left.slice(leftIndex))
          .concat(right.slice(rightIndex));
      }

      // 示例
      const array = [34, 7, 23, 32, 5, 62];
      const sortedArray = mergeSort(array);
      console.log(sortedArray); // 输出排序后的数组```
    </script>
  </body>
</html>
